import axios from 'axios';
import store from '../store'
// 请求头拦截
// post body
// get  query
// headers 请求头传参
axios.interceptors.request.use(config=>{
    // token 一般那里来的？  前端登录以后 登录接口返回的  前端吧token 存起来 本地存储 或者 Vuex（长效存储）
    // 一般会在这里处理token 吧token加入都请求头的header字段
    const token = store.state.user.token; // 后端给一个token 每次请求都携带上token 否则 请求会失败
    const headers = {};
    if(token) {
        headers.authorization = token; // 专稿五
    }
    return {
        ...config,
        headers
    };
})
// 响应头拦截器
// 200 204 301 304 401 403 404  500+
axios.interceptors.response.use(response=>{
    // 200+ 300+
    // 一般在这里处理接口返回数据
    // 比如状态码
    // 10001 密码错误 10002 你没有权限
    if(response.data.code === 10001) {
        alert('没有密码')
    }
    return response.data;
},(err) => {
    // 400+ 500+
    switch(err.response.status) {
        case 401: 
            alert('你没有登录');
        break;
        case 404:
            alert('接口没找到')
        break;
        case 500:
            alert('服务器错误')
        break;
    }
    return Promise.reject(err)
})
// token 无痛刷新
// 接口缓存 同一时间发出接口过多  先存起来  一部分一部分的发

export default axios;